The small computer system interface (“SCSI”) protocol has become a ubiquitous protocol for formatting commands. Versions of the SCSI standard (e.g., SCSI-1, SCSI-2, SCSI-3) define both a command set with defined commands (“SCSI commands”) and responses, a data transport protocol (the “SCSI transport protocol”) for encapsulating the commands and responses, and a SCSI physical interface. SCSI commands can be encapsulated according to a variety of data transport protocols without using the SCSI data transport protocol or SCSI physical interface. Example data transport protocols include fibre channel, serial storage architecture, serial bus protocol, iSCSI, advanced technology attachment (“ATA”), serial ATA (“SATA”), serial attached SCSI (“SAS”) and others. Thus, the SCSI standard separates the SCSI physical interface, SCSI command sets and the SCSI data transport protocol.
As the SCSI standard has evolved, operability issues have arisen between devices that use different versions of the SCSI standard or implement different versions of the SCSI command sets. Legacy devices that support the SCSI-1 or SCSI-2 standard may not support all the commands of the SCSI-3 standard. Additionally, various versions of SCSI primary commands (“SPC”) have been developed, such that a device supporting SPC-2 commands may not support SCSI-2 formatted commands. The discrepancy of abilities between the various devices may become problematic, as the capabilities of certain device may lag far behind the capabilities of newer devices.
More particularly, the commands utilized in any chain of devices must be tailored to the capabilities of the intended target, regardless of the capabilities of the target or other devices in communication chain between the initiator and the target. This situation arises as a result of the method by which an initiator determines the ability of a target device.
Typically, before interacting with a target, an initiator sends a SCSI INQUIRY commands to an intended target to determine the capabilities of the target. In response, the target sends an INQUIRY response to the initiator. This INQUIRY response is in the format dictated by the commands set implemented by the target. Thus, an initiator determines the capabilities of a target by evaluating the format of the target's response to the SCSI INQUIRY command.
This methodology, however, does not allow the initiator to take advantage of the capabilities of any intervening devices in the communication chain between the initiator and the target, as the initiator is only aware of the capabilities of the target itself. For example, a router interposed between the initiator and the target, and used to route communications between the initiator and target, may be more capable than the target device. The initiator cannot take advantage of the capabilities of the router, however, as the initiator sends commands based only on the capabilities of the target.
One solution to this problem is to replace the legacy devices. This solution is non-ideal, however, as it is expensive and requires the migration of data to new devices.
Thus, a need exists for a method and system to coordinate the interoperability of device which takes advantage of the resources of the most capable device in the chain of communication.